package com.itmei.exceldemo.utils;

import java.util.*;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @Author itmei
 * @Date 2024/4/13 19:35
 * @description: 用户构建工具类
 * @Title: UserBuildUtils
 * @Package com.itmei.exceldemo.utils
 */
public class UserBuildUtils {
    /***
     * 男
     */
    private static Integer male = 1;
    /**
     * 女
     */
    private static Integer female = 0;


    public static String buildName(String sexStr) {
        Random random = new Random();
        String[] names = getNames(sexStr);
        String name = names[random.nextInt(names.length)];
        String surname = surnames[random.nextInt(surnames.length)];
        return surname + name;
    }

    public static String[] getNames(String sexStr) {
        return ("男".equals(sexStr)) ? namesArrays.get(male) : namesArrays.get(female);
    }


    /**
     * 定义一个包含更多姓氏的数组
     */
    private final static String[] surnames = {
            "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈",
            "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
            "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
            "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章",
            "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦",
            "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳",
            "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺",
            "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常",
            "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余",
            "元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹",
            "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "贝",
            "明", "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞",
            "熊", "纪", "舒", "屈", "项", "祝", "董", "梁", "梅", "蔡",
            "丁", "邓", "董", "方", "顾", "韩", "黄", "蒋", "柯", "孔",
            "梁", "廖", "毛", "彭", "史", "汤", "唐", "汪", "王", "郑",
            "魏", "许", "徐", "薛", "杨", "余", "叶", "张", "赵", "周",
            "朱", "东方", "独孤", "慕容", "欧阳", "司马", "上官", "令狐",
            "诸葛", "南宫", "夏侯", "西门", "尉迟", "长孙", "公孙", "司徒", "宗政",
            "轩辕", "百里", "呼延", "端木", "东郭", "南门", "呼丘", "南宫"
    };
    /**
     * 定义包含常见男性名字的数组
     */
    private final static String[] maleNames = {
            "伟", "刚", "勇", "军", "磊", "涛", "斌", "强", "鹏", "杰",
            "峰", "超", "明", "俊", "浩", "平", "辉", "鑫", "毅", "国",
            "宇", "帆", "旭", "龙", "亮", "建", "运", "鹤", "振", "旺",
            "文", "雷", "成", "欣", "琪", "济", "辰", "航", "阳", "翔",
            "坤", "琛", "晖", "哲", "俊杰", "彬", "阳", "和", "涵", "伦",
            "昊", "建国", "高", "威", "炎", "华", "东", "嘉", "云", "瑞",
            "岩", "翰", "晗", "霖", "博", "轩", "舟", "宁", "凡", "童",
            "淳", "宝", "承", "震", "腾", "维", "宏", "瀚", "洪", "扬",
            "弘", "尧", "杨", "宗", "桓", "俊", "峻", "皓", "馨", "晓",
            "文", "程", "浩", "伦", "君", "远", "尚", "凯", "帆", "勋",
            "晨", "瑞", "滨", "坚", "瑜", "烨", "昆", "楷", "泽", "继",
            "森", "梓", "颖", "煜", "诚", "斐", "力", "鸿", "翼", "富",
            "和", "宽", "恒", "瑾", "仕", "义", "奇", "伯", "华", "雨",
            "沛", "忠", "利", "谦", "聪", "茂", "栋", "鸣", "潇", "扬",
            "钟", "韦", "皓", "毓", "越", "讯", "之", "挺", "宾", "聪",
            "伟强", "刚毅", "勇磊", "军涛", "磊斌", "涛强", "斌鹏", "强杰", "鹏峰", "杰超",
            "峰明", "明俊", "俊浩", "浩平", "平辉", "辉鑫", "鑫毅", "毅国", "国宇", "宇帆",
            "帆旭", "旭龙", "龙亮", "亮建", "建运", "运鹤", "鹤振", "振旺", "旺文", "文雷",
            "雷成", "成欣", "欣琪", "琪济", "济辰", "辰航", "航阳", "阳翔", "翔坤", "坤琛"
    };

    /**
     * 定义包含常见女性名字的数组
     */
    private final static String[] femaleNames = {
            "娟", "芳", "娜", "秀英", "敏", "静", "丽", "艳", "霞", "红",
            "玲", "芬", "英", "华", "萍", "美", "娣", "露", "珊", "燕",
            "洁", "梅", "琳", "素", "云", "莲", "真", "环", "雪", "倩",
            "琴", "婷", "玉", "秀兰", "桂英", "丹", "蓉", "艳", "琼", "健",
            "红", "娥", "菊", "兰", "莉", "亚", "娟", "英", "霞", "玲",
            "珊", "丽", "芳", "燕", "萍", "华", "彩", "梅", "芬", "婷",
            "玉", "秀兰", "桂英", "珍", "娜", "金", "琳", "翠", "媛", "丹",
            "瑞", "霞", "凤", "琴", "岚", "颖", "雯", "莹", "萱", "艳",
            "瑶", "娴", "娉", "嫣", "婉", "晶", "姗", "露", "静", "淑",
            "璇", "月", "桂英", "琴", "莉", "茹", "婕", "萍", "婷", "媚",
            "慧", "莹", "蓉", "琼", "岚", "苗", "茜", "秋", "凌", "薇",
            "娅", "彤", "莎", "香", "梦", "婧", "娜", "婷", "霞", "萍",
            "妮", "红", "茹", "静", "珊", "秀", "颖", "静", "雪", "婷",
            "玉", "凤", "红", "花", "静", "琳", "玲", "娟", "丽", "丹",
            "燕", "萍", "美", "娜", "霞", "英", "琴", "莉", "芳", "雪",
            "娟芳", "芳娜", "娜秀", "秀英", "英敏", "敏静", "静丽", "丽艳", "艳霞", "霞红",
            "红玲", "玲芬", "芬英", "英华", "华萍", "萍美", "美娣", "娣露", "露珊", "珊燕",
            "燕洁", "洁梅", "梅琳", "琳素", "素云", "云莲", "莲真", "真环", "环雪", "雪倩",
            "倩琴", "琴婷", "婷玉", "玉秀兰", "秀兰桂英", "桂英丹", "丹蓉", "蓉艳", "艳琼", "琼健"
    };
    /**
     * 名的集合
     */
    private final static List<String[]> namesArrays = Arrays.asList(femaleNames, maleNames);

    /**
     * 生成中国大陆手机号码
     * @return
     */
    public static String generatePhoneNumber() {
        String[] phoneHead = {"13", "14", "15", "16", "17", "18", "19"};
        String phoneNumber = phoneHead[ThreadLocalRandom.current().nextInt(0, phoneHead.length)];
        // 生成剩余9位数字
        for (int i = 0; i < 9; i++) {
            phoneNumber += ThreadLocalRandom.current().nextInt(0, 10);
        }
        return phoneNumber;
    }

    public static void main(String[] args) {
        Map<String, Integer> exitPhone = new HashMap<>();
        for (int i = 0; i < 100000; i++) {
            String ph = generatePhoneNumber();
            // 检查手机号是否已经存在于 HashMap 中
            if (exitPhone.containsKey(ph)) {
                // 如果存在，增加计数器
                exitPhone.put(ph, exitPhone.get(ph) + 1);
            } else {
                // 如果不存在，将手机号添加到 HashMap 中，并初始化计数器为1
                exitPhone.put(ph, 1);
            }
        }

        // 输出重复的手机号以及它们的出现次数
        for (Map.Entry<String, Integer> entry : exitPhone.entrySet()) {
            if (entry.getValue() > 1) {
                System.out.println("重复的手机号：" + entry.getKey() + "，出现次数：" + entry.getValue());
            }
        }
    }
}
